// 中间件模块
//验证表单模块 安装 @hapi/joi 包，为表单中携带的每个数据项，定义验证规则：
const joi = require('@hapi/joi')

//定义用户名
const username = joi.string().alphanum().min(1).max(10).required()

//定义密码验证规则
const password = joi.string().pattern(/^[\S]{6,12}$/).required()

// 定义 id, nickname, emial 的验证规则
const id = joi.number().integer().min(1).required()

const nickname = joi.string().required()
const email = joi.string().email().required()
const avatar = joi.string().dataUri().required()
// 定义 分类名称 和 分类别名 的校验规则
const name = joi.string().required()
const alias = joi.string().alphanum().required()

exports.reg_login_schema = {
  body: {
    username,
    password
  }
}
exports.getid = {
  body: {
    id
  }
}

exports.update_userinfo_schema = {
  body: {
    id,
    nickname,
    email
  }
}
exports.UpdataPassword = {
  body: {
    id,
    oldPwd: password,
    // 使用 joi.not(joi.ref('oldPwd')).concat(password) 规则，验证 req.body.newPwd 的值
    // 解读：
    // 1. joi.ref('oldPwd') 表示 newPwd 的值必须和 oldPwd 的值保持一致
    // 2. joi.not(joi.ref('oldPwd')) 表示 newPwd 的值不能等于 oldPwd 的值
    // 3. .concat() 用于合并 joi.not(joi.ref('oldPwd')) 和 password 这两条验证规则
    newPwd: joi.not(joi.ref('oldPwd')).concat(password)
  }
}

exports.avatar = {
  body: {
    avatar
  }
}
exports.add_cate_schema = {
  body: {
    name,
    alias,
  },
}
// 校验规则对象 - 删除分类
exports.delete_cate_schema = {
  params: {
    id,
  },
}